Python 3の除算結果がfloatのために起こる誤差
ABC139 DでWAになった
https://atcoder.jp/contests/abc139/submissions/14898044
テストケースをダウンロードして確認したところ、誤差っぽい
code:py
In
2
: 999999999 * (999999999 - 1) /2
Out
2
: 4.999999985e+17
In
3
: 999999999 * (999999999 - 1) // 2
Out
3
: 499999998500000001
Python3の
/
による
除算
結果は
浮動小数点数
(float)のため、
精度
が足りなくて
誤差
が発生した模様
解決案
//
を使う (商
int
を返す)
decimal
を使う
ABC139 Dの計算は必ず割り切れるので
//
で計算して結果を
int
としても結果は同じ